package org.jsola.hr.service;

import org.jsola.core.Page;
import org.jsola.core.service.IService;
import org.jsola.hr.dao.INewsInfoDAO;
import org.jsola.hr.dto.NewsInfoAddDTO;
import org.jsola.hr.dto.NewsInfoUpdateDTO;
import org.jsola.hr.entity.NewsInfoDO;
import org.jsola.hr.query.NewsInfoQuery;
import org.jsola.hr.vo.NewsInfoListVO;
import org.jsola.hr.vo.NewsInfoVO;
import org.jsola.user.core.TokenUser;

import java.util.List;


/**
 * 官网信息的类型
 *
 * @author zhr
 */
public interface INewsInfoService extends IService<INewsInfoDAO, NewsInfoDO> {

    /**
     * 新增官网信息的类型
     * @param newsInfoAddDTO 新增官网信息的类型DTO
     * @param tokenUser 当前用户
     * @return 官网信息的类型详情信息
     */
    NewsInfoVO save(NewsInfoAddDTO newsInfoAddDTO, TokenUser tokenUser);

    /**
     * 修改官网信息的类型
     * @param newsInfoUpdateDTO 修改官网信息的类型DTO
     * @param tokenUser 当前用户
     * @return 更新数量
     */
    int update(NewsInfoUpdateDTO newsInfoUpdateDTO, TokenUser tokenUser);


    /**
     * 批量删除官网信息的类型，物理删除，更新is_valid字段，从回收站删除
     * @param tokenUser 当前用户
     * @param newsInfoIds 官网信息的类型id
     * @return 删除数量
     */
    int deleteByIds(TokenUser tokenUser, String...newsInfoIds);

    /**
     * 根据官网信息的类型id查找
     * @param newsInfoId 官网信息的类型id
     * @param siteId 所属站点id
     * @return 官网信息的类型详情信息
     */
    NewsInfoVO selectById(String newsInfoId, String siteId);

    /**
     * 查询官网信息的类型
     * @param newsInfoQuery 查询条件
     * @param siteId 所属站点id
     * @return 官网信息的类型列表信息
     */
    List<NewsInfoListVO> select(NewsInfoQuery newsInfoQuery, String siteId);

    /**
    * 查询官网信息的类型记录数
    * @param newsInfoQuery 查询条件
    * @param siteId 所属站点id
    * @return 官网信息的类型记录数
    */
    int selectCount(NewsInfoQuery newsInfoQuery, String siteId);

    /**
     * 分页查询官网信息的类型
     * @param newsInfoQuery 查询条件
     * @param siteId 所属站点id
     * @return 官网信息的类型列表信息
     */
    Page<NewsInfoListVO> selectPage(NewsInfoQuery newsInfoQuery, String siteId);


    /**
     * 根据官网信息的类型id查找
     * @param newsInfoId 官网信息的类型id
     * @param siteId 所属站点id
     * @return 官网信息的类型
     */
    NewsInfoDO selectDOById(String newsInfoId, String siteId);

    /**
     * 查询官网信息的类型
     * @param newsInfoQuery 查询条件
     * @param siteId 所属站点id
     * @return 官网信息的类型列表
     */
    List<NewsInfoDO> selectDO(NewsInfoQuery newsInfoQuery, String siteId);

    /**
     * 查询某个新闻的详细内容
     * @param newsTypeId
     * @return
     */
    NewsInfoListVO selectNewsInfoByNewsTypeId(String newsTypeId);
}


